JSTL (JSP Standard Tag Library) হল একটি ট্যাগ লাইব্রেরি যা জেএসপি (JSP) পেজগুলিতে সাধারণ এবং প্রয়োজনীয় ফিচারগুলো প্রয়োগ করতে সহায়ক। এটি JavaServer Pages (JSP) এ লজিক্যাল কাজ, লুপিং, শর্তাধীন লজিক, ডেটা ম্যানিপুলেশন এবং অন্যান্য টাস্কের জন্য ট্যাগ সরবরাহ করে।
JSTL বিভিন্ন ধরনের ট্যাগ দিয়ে কাজ করে, যার মধ্যে উল্লেখযোগ্য কিছু হল:
- Core Tags: সাধারণ কাজ যেমন লুপ, শর্ত, ইত্যাদি।
- Formatting Tags: ডেটা ফরম্যাটিং, তারিখ ইত্যাদি।
- SQL Tags: ডেটাবেস অপারেশন।
- XML Tags: XML ফাইল প্রক্রিয়া করা।
- Internationalization Tags: ভাষার কনভার্শন ইত্যাদি।
এখানে আমরা Core Tags এবং Formatting Tags এর মাধ্যমে একটি সাধারণ উদাহরণ দেখব।
JSTL ব্যবহারের জন্য প্রস্তুতি
JSTL ব্যবহার করার জন্য প্রথমে জেএসপি প্রজেক্টে JSTL লাইব্রেরি যুক্ত করতে হয়। মেভেন (Maven) বা জেডি (JAR) ফাইলের মাধ্যমে এটি অন্তর্ভুক্ত করা যায়।
মেভেন পম (pom.xml):
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>javax.servlet.jsp.jstl-api</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.servlet.jsp.jstl</artifactId>
<version>1.2.1</version>
</dependency>
JAR ফাইলের মাধ্যমে:
JSTL-এর jstl.jar এবং standard.jar ফাইলটি WEB-INF/lib ডিরেক্টরিতে যুক্ত করতে হবে।
JSTL ট্যাগ ব্যবহার উদাহরণ
এখানে আমরা একটি উদাহরণ দেখব যেখানে Core Tag এবং Formatting Tag ব্যবহার করা হবে।
১. Core Tags - Looping এবং Conditional Logic
ধরা যাক, আমাদের একটি Student ক্লাসে ছাত্রদের তথ্য রয়েছে এবং আমরা একটি তালিকা তৈরি করতে চাই।
Student.java:
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
এখন students.jsp পেজে আমরা এই ডেটাগুলো লুপ করে দেখাব।
students.jsp:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Student List</title>
</head>
<body>
<h2>Students Information</h2>
<ul>
<c:set var="students" value="${studentsList}" />
<c:forEach var="student" items="${students}">
<li>${student.name} - ${student.age} years old</li>
</c:forEach>
</ul>
</body>
</html>
ব্যাখ্যা:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>- এটি JSTL Core ট্যাগ লাইব্রেরি অন্তর্ভুক্ত করার জন্য ব্যবহার করা হয়।<c:set>- একটি ভ্যারিয়েবল সেট করতে ব্যবহৃত হয়।<c:forEach>- এটি একটি লুপ, যা একটি তালিকা বা অ্যারের মধ্যে ইটারেট করতে ব্যবহৃত হয়।
২. Formatting Tags - Date Formatting
ধরা যাক, আমরা একটি তারিখ ফরম্যাট করতে চাই।
date.jsp:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>Date Example</title>
</head>
<body>
<h2>Formatted Date</h2>
<fmt:formatDate value="${date}" pattern="dd-MM-yyyy" />
</body>
</html>
ব্যাখ্যা:
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>- এটি Formatting ট্যাগ লাইব্রেরি অন্তর্ভুক্ত করার জন্য ব্যবহৃত হয়।<fmt:formatDate>- এই ট্যাগটি নির্দিষ্ট তারিখের মান ফরম্যাট করতে ব্যবহৃত হয়।
সার্ভলেট থেকে ডেটা পাঠানো
উপরের students.jsp পেজটি চালানোর জন্য, আমাদের সার্ভলেট বা JavaBean থেকে ডেটা পাঠাতে হবে।
StudentServlet.java:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class StudentServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<Student> students = new ArrayList<>();
students.add(new Student("John", 20));
students.add(new Student("Jane", 22));
students.add(new Student("Doe", 21));
request.setAttribute("studentsList", students);
RequestDispatcher dispatcher = request.getRequestDispatcher("students.jsp");
dispatcher.forward(request, response);
}
}
ব্যাখ্যা:
- এখানে, আমরা
Studentক্লাসের একটি তালিকা তৈরি করেছি এবং তা studentsList নামে রিকোয়েস্টে সেভ করেছি। - তারপর এই তালিকাটি students.jsp পেজে ফরওয়ার্ড করা হয়েছে।
সারাংশ
JSTL ব্যবহার করার মাধ্যমে জেএসপি পেজগুলির মধ্যে Java কোডের পরিমাণ কমানো যায় এবং HTML ও Java কোডের মধ্যে বিভাজন বজায় রাখা যায়। JSTL এর Core Tags এবং Formatting Tags ব্যবহার করে সাধারণ কাজ যেমন লুপিং, শর্তাবলী, ডেটা ফরম্যাটিং সহজে করা যায়। এই পদ্ধতিতে কোড পরিষ্কার এবং রক্ষণাবেক্ষণে সহজ হয়।